// Copyright (c) 2024, the Dart project authors.
// All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.

import 'package:meta/meta.dart' show internal;

import '../arkobject.dart' hide ArkObject;
import '../arkreference.dart';
import '../types.dart';

// Simple ArkCharacter implementation
class ArkCharacter {
  final int value;
  
  ArkCharacter(this.value);
  
  ArkCharacter.fromReference(ArkReference reference) : value = 0; // TODO: implement
  
  static const type = ArkCharacterType();
  static const nullableType = ArkCharacterNullableType();

  static final _class = ArkClass.forName(r'ark/lang/Character');
  static final _ctorId = _class.constructorId(r'(C)V');
  
  ArkCharacter.charCtor(int char) : value = char;

  static final _charValueId =
      _class.instanceMethodId(r'charValue', r'()C');

  int charValue({bool releaseOriginal = false}) {
    // TODO: implement actual method call
    return value;
  }
  
  @override
  String toString() => 'ArkCharacter($value)';
}

// Simple type definitions
class ArkCharacterType {
  const ArkCharacterType();
}

class ArkCharacterNullableType {
  const ArkCharacterNullableType();
}